package com.ysxsoft.wdg.util;

import android.util.SparseArray;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class ObserverMap {
    private static HashMap<String, IPageDataChangeObserver> pageHashMap;

    public static void reg(String clazzName, IPageDataChangeObserver target) {
        if (pageHashMap == null) {
            pageHashMap = new HashMap<>();
        }
        if (pageHashMap.containsValue(target)) {
            pageHashMap.remove(clazzName);
        }
        pageHashMap.put(clazzName, target);
    }

    public static void notifyAllPage() {
        if (pageHashMap == null) return;
        Set<String> set = pageHashMap.keySet();
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()) {
            String key = iterator.next();
            pageHashMap.get(key).change();
        }
    }

    public static void notify(String clazzName) {
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).change();
        }
    }

    /**
     * 分享
     *
     * @param clazzName 目标名称
     */
    public static void notify(String clazzName,String gid,String url) {
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).share(gid,url);
        }
    }

    /**
     * 分享
     *
     * @param clazzName 目标名称
     */
    public static void notify2(String clazzName,String gid,String url) {
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).share2(gid,url);
        }
    }

    /**
     * 支付
     *
     */
    public static void pay(String clazzName,String orderId,String totalMoney,int type,String url) {
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).pay(orderId,totalMoney,type,url);
        }
    }

    public static void back(String clazzName){
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).back();
        }
    }

    public static void notifyPay(String gid){
    }

    public static void toKanOrderDetail(String clazzName,String id){
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).toKanOrderDetail(id);
        }
    }

    public static void toPinOrderDetail(String clazzName,String id){
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).toPinOrderDetail(id);
        }
    }

    public static void toProductDetail(String clazzName,String productId){
        if (pageHashMap == null) return;
        if (pageHashMap.containsKey(clazzName)) {
            pageHashMap.get(clazzName).toPinOrderDetail(productId);
        }
    }

    public static void remove(String clazzName) {
        if (pageHashMap == null) {
            pageHashMap = new HashMap<>();
        }
        pageHashMap.remove(clazzName);
    }

    public interface IPageDataChangeObserver {
        void change();
        void share(String gid,String url);
        void share2(String gid,String url);
        void pay(String orderId,String totalMoney,int type,String url);
        void back();
        void toPinOrderDetail(String id);
        void toKanOrderDetail(String id);
    }
}
